iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0

Line上可用的emojis有兩種一種是Unicode emojis,另一種是LINE emojis。

LINE emojis是line bot sdk python近期才更新,在回覆TextSendMessage()時可加上emojis參數傳送帶有LINE emoji屬性的訊息。可惜的是Message event獲得訊息在Android上還接收不到emoji參數,希望之後可以支援。
https://developers.line.biz/en/reference/messaging-api/#message-event
https://ithelp.ithome.com.tw/upload/images/20210921/20140165mNcz332Gmy.png

Unicode emojis

Android和IOS原生emojis,現在大多數網頁和APP中都能使用。
https://zh.wikipedia.org/wiki/%E7%B9%AA%E6%96%87%E5%AD%97

LINE emojis

為LINE專屬的表情貼,預設就有上千款免費表情貼可以任意使用,與貼圖不同的地方是它可以單獨做為貼圖使用,也可以如Android和IOS原生emojis一樣跟文字訊息一起使用。https://ithelp.ithome.com.tw/upload/images/20210921/20140165llnUlBClW2.jpg

回覆LINE emoji訊息

這邊一樣參考line bot sdk python
https://github.com/line/line-bot-sdk-python#textsendmessage-emoji

emoji = [
    {
        "index": 0,
        "productId": "5ac1bfd5040ab15980c9b435",
        "emojiId": "001"
    },
    {
        "index": 13,
        "productId": "5ac1bfd5040ab15980c9b435",
        "emojiId": "002"
    }
]
text_message = TextSendMessage(text='$ LINE emoji $', emojis=emoji)

index為emoji放置位置,index由0開始算0,1,2,3,...
放置位置文字會打上$,如果index位置不是$訊息回覆會報錯並被拒絕
LINE emojis的Product ID與emoji ID對照表
https://developers.line.biz/en/docs/messaging-api/emoji-list/#line-emoji-definitions

程式

@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
    emoji = [
        {
            "index": 0,
            "productId": "5ac21a8c040ab15980c9b43f",
            "emojiId": "004"
        },
        {
            "index": 1,
            "productId": "5ac21a8c040ab15980c9b43f",
            "emojiId": "001"
        },
        {
            "index": 2,
            "productId": "5ac21a8c040ab15980c9b43f",
            "emojiId": "025"
        },
    ]         
    if(event.message.text=="Day 07"):
        message=TextSendMessage("Day 07 line bot sdk python範例程式在做什麼")
    elif(event.message.text=="Day 08"):
        message=TextSendMessage("Day 08讓Linebot回覆特定訊息")
    elif(event.message.text=="Unicode emoji"):
        message=TextSendMessage("\U0001F449Unicode emoji\U0001F448")
    elif(event.message.text=="LINE emoji"):
        message=TextSendMessage(text='$$$ 09 回覆emoji訊息', emojis=emoji)
    else:
        message=TextSendMessage(event.message.text)

    print(event)
    line_bot_api.reply_message(
        event.reply_token,
        message)

message=TextSendMessage("\U0001F449Unicode emoji\U0001F448")

可以在上方的Wiki連結上看到emoji Unicode對照表
?U+1F449 ?U+1F448
在程式中表現為\U0001F449與\U0001F448

def handle_message(event):
emoji = [
{
"index": 0,
"productId": "5ac21a8c040ab15980c9b43f",
"emojiId": "004"
},
{
"index": 1,
"productId": "5ac21a8c040ab15980c9b43f",
"emojiId": "001"
},
{
"index": 2,
"productId": "5ac21a8c040ab15980c9b43f",
"emojiId": "025"
},
]
message=TextSendMessage(text='$$$ 09 回覆emoji訊息', emojis=emoji)

這邊定好你要的LINE emoji跟位置
'$$$ 09 回覆emoji訊息'
https://ithelp.ithome.com.tw/upload/images/20210921/201401653YF3o0VBqi.jpg
參考:
https://developers.line.biz/en/docs/messaging-api/emoji-list
https://developers.line.biz/en/reference/messaging-api/#message-event
https://github.com/line/line-bot-sdk-python


上一篇
DAY 08 讓Linebot回覆特定訊息
下一篇
Day 10 Template message in Messaging API
系列文
LINE Messaging API SDK for Python 實現群組團購輔助機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言